package de.akabahn.ebd.fahrplan.structure;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Bahnhof {

    private List<String> gleise;
    private List<Bahnhof> nachbarn;
    private String name;
    private String kurzbez;

    public Bahnhof() {
	gleise = new ArrayList<String>();
	nachbarn = new ArrayList<Bahnhof>();
    }

    /**
     * @return the gleise
     */
    public List<String> getGleise() {
	return gleise;
    }

    /**
     * @param gleise
     *            the gleise to set
     */
    public void setGleise(List<String> gleise) {
	this.gleise = gleise;
    }

    /**
     * @return the nachbarn
     */
    public List<Bahnhof> getNachbarn() {
	return nachbarn;
    }

    /**
     * @param nachbarn
     *            the nachbarn to set
     */
    public void setNachbarn(List<Bahnhof> nachbarn) {
	this.nachbarn = nachbarn;
    }

    /**
     * @return the name
     */
    public String getName() {
	return name;
    }

    /**
     * @param name
     *            the name to set
     */
    public void setName(String name) {
	this.name = name;
    }

    /**
     * @return the kurzbez
     */
    public String getKurzbez() {
	return kurzbez;
    }

    /**
     * @param kurzbez
     *            the kurzbez to set
     */
    public void setKurzbez(String kurzbez) {
	this.kurzbez = kurzbez;
    }

    /**
     * Method for adding a neighbouring Bahnhof to the current one Note: A
     * two-way relation is created, this means, that the current Bahnhof is also
     * set as neighbour for the given neighbour
     * 
     * @param newNachbar
     *            Bahnhof, which should be added
     */
    public void addNachbar(Bahnhof newNachbar) {
	if (!nachbarn.contains(newNachbar)) {
	    nachbarn.add(newNachbar);
	    newNachbar.addNachbar(this);
	}
    }

    /**
     * Method for resolving a string representation of all available track
     * numbers
     * 
     * @return String consisting of the comma delimited track numbers
     */
    public String getGleiseAsString() {
	StringBuffer ausgabe = new StringBuffer();
	for (Iterator<String> it = gleise.iterator(); it.hasNext();) {
	    String current = it.next();
	    ausgabe.append(current);
	    if (it.hasNext())
		ausgabe.append(",");
	}
	return ausgabe.toString();
    }
}
